package CutLoad.components.container
{
	import CutLoad.Base;
	import CutLoad.components.CButton;
	import CutLoad.cookies.CArray;
	import CutLoad.mc.PageBtnsSome;
	
	import flash.events.MouseEvent;
	public class CTableList extends Base
	{
		private var container:ContainerH;
		private var pageBtns:PageBtnsSome;
		private var funPageChang:Function,classBtnPageUp:Function,classBtnPageDown:Function,classMcBtn:Function,showPageBtnNum:Number,xspace:Number;
		private var arrDate:Array;
		private var currentPage:Number=1,pageCount:Number=0,pagesize:Number;
		//
		private var setPageBtnsXY_type:Number,setPageBtnsXY_xx:Number,setPageBtnsXY_yy:Number;
		//格式化好的数组信息
		private var arrPageData:Array;
		public function CTableList(
			w:Number,
			pagesize:Number,
			funPageChang:Function,
			//PageBtnsSome类的一些参数
			classBtnPageUp:Function,
			classBtnPageDown:Function,
			classMcBtn:Function,
			showPageBtnNum:Number=3,
			xxspace:Number=3,
			//
			xspace:Number=5,
			yspace:Number=5)
		{
			container=new ContainerH();
			container.init({w:w,h:10,isAuto:true,xspace:xspace,yspace:yspace});
			container.setBakColor(0x000000,0);
			container.show(this);
			//
			if(funPageChang==null){
				funPageChang=function(num:Number):void{
					
				}
			}
			this.funPageChang=funPageChang;
			this.classBtnPageUp=classBtnPageUp;
			this.classBtnPageDown=classBtnPageDown;
			this.classMcBtn=classMcBtn;
			this.showPageBtnNum=showPageBtnNum;
			this.xspace=xxspace;
			currentPage=1;
			pageCount=0;
			this.pagesize=pagesize;
			arrDate=new Array();
			arrPageData=new Array();
			//
			//默认按钮组的位置.
			setPageBtnsXY_type=1;
			setPageBtnsXY_xx=0;
			setPageBtnsXY_yy=0;
		}
		/**
		 * 设置 翻页按钮组的位置
		 * @param type 1:底部左对齐   2:底部中对齐  3：底部右对齐  其它值：设置绝对坐标
		 * @param xx 绝对坐标x位置，默认为-10000 表示不设置  
		 * @param yy 绝对坐标y位置，默认为-10000 表示不设置
		 * 
		 */		
		public function setPageBtnsXY(type:Number,xx:Number=-10000,yy:Number=-10000,offsetX:Number=0,offsetY:Number=0):void{
			if(this.pageBtns==null) return;
			setPageBtnsXY_type=type;
			setPageBtnsXY_xx=xx;
			setPageBtnsXY_yy=yy;
			//trace(pageBtns.getShowWidth());
			//
			switch(type){
				case 1:
					//底部左对齐
					pageBtns.x=0;
					pageBtns.y=container.getShowHeight();
					pageBtns.x+=offsetX;
					pageBtns.y+=offsetY;
					break;
				case 2:
					//底部中对齐
					pageBtns.x=(container.getShowWidth()-pageBtns.getShowWidth())/2;
					pageBtns.y=container.getShowHeight();
					pageBtns.x+=offsetX;
					pageBtns.y+=offsetY;
					break;
				case 3:
					//底部右对齐
					pageBtns.x=Math.abs(container.getShowWidth()-pageBtns.getShowWidth())
					pageBtns.y=container.getShowHeight();
					pageBtns.x+=offsetX;
					pageBtns.y+=offsetY;
					break;
			}
			//
			//设置绝对坐标
			if(xx>-10000) pageBtns.x=xx;
			if(yy>-10000) pageBtns.y=yy;
		}
		/**
		 *  获得添加元素的容器
		 * @return 
		 * 
		 */		
		public function getContainer():ContainerH{
			return container
		}
		/**
		 * 设置翻页组件 PageBtnsSome类实例。
		 * 
		 */		
		protected function createPageBtn():void{
			if(pageBtns!=null){
				if(pageBtns.parent!=null) pageBtns.killMe();
			}
			pageBtns=new PageBtnsSome(
				classBtnPageUp,
				classBtnPageDown,
				pageCount,
				pageBtns_chang,
				classMcBtn,
				currentPage,
				showPageBtnNum,
				xspace
			)
			setPageBtnsXY(setPageBtnsXY_type,setPageBtnsXY_xx,setPageBtnsXY_yy);
			this.addChild(pageBtns);
		}
		/**
		 * 获得翻页组件PageBtnsSome类实例
		 * @return 
		 * 
		 */		
		public function getPageBtns():PageBtnsSome{
			return pageBtns
		}
		/**
		 * 获得页数 
		 * 
		 */		
		protected function setPageCount():void{
			pageCount=arrPageData.length;
			createPageBtn();
		}
		/**
		 * 添加一个元素进入 
		 * @param item
		 * 
		 */		
		public function append(item:Base):void{
			arrDate.push(item);
			arrPageData=CArray.getSpliteArrToSomeArr(arrDate,this.pagesize);
			setPageCount();
			showPageNoChek(this.currentPage);
		}
		/**
		 * 添加一组元素进入 
		 * @param arr
		 * 
		 */		
		public function appendSome(arr:Array):void{ 
			for(var i:Number=0;i<arr.length;i++){
				arrDate.push(arr[i]);
			}
			arrPageData=CArray.getSpliteArrToSomeArr(arrDate,this.pagesize);
			setPageCount();
			showPageNoChek(this.currentPage);
		}
		/**
		 * 显示第几页，有做一些简单的判断. 
		 * @param page
		 * 
		 */		
		public function showPage(page:Number):void{
			if(page<0) return;
			if(page>this.pageCount) return;
			if(page==this.currentPage) return;
			showPageNoChek(page);
			setPageBtnsXY(setPageBtnsXY_type,setPageBtnsXY_xx,setPageBtnsXY_yy);
		}
		/**
		 * 显示第几页，没有对参数做任何的判断.
		 * @param page
		 * 
		 */		
		protected function showPageNoChek(page:Number):void{
			this.currentPage=page;
			var arr:Array=arrPageData[page-1];
			container.removeAll();
			for(var i:Number=0;i<arr.length;i++){
				var itemTem:Base=arr[i];
				this.container.append(itemTem);
			}
			//container.setTakeWH();
			//container.showGuide();
		}
		/**
		 * 当点击翻页，改变页数，调用的方法。 
		 * @param page
		 * 
		 */		
		protected function pageBtns_chang(page:Number):void{
			showPage(page);
			funPageChang(page);
		}
	}
}